package com.hanamaki.demo03;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Ignore;
import org.testng.annotations.Test;

import java.util.Arrays;
import java.util.Set;

/**
 * 1. selenium中多浏览窗口  句柄操作
 */
public class SeleniumTemplate01 {

    //注册驱动
    /**
     * driver代表浏览器对象
     */
    WebDriver driver;
    @BeforeMethod
    public void setUp() {
        //注册本地火狐打开的位置
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        //初始化
        driver = new FirefoxDriver();
    }

    @Test
    public void test() {
        driver.get("file:///C:/Users/edz/Desktop/testhtml/exam/index.html");

        /* 定位 网页中 继续提供房源信息 */
        WebElement element = driver.findElement(By.xpath("//a[@href='House.html']"));
        element.click();

        /* 通过 by.name方法获取 物业名称  现在测试的是 a  标签 跳转的方式 是 target="_self" 在当前标签页中跳转 */
        /* 在当前标签页中跳转 测试无误 */

        /* 将a 标签 跳转方式 修改为 target="_blank"  测试失败  */

        /* 问题？：因为a标签在跳转的时候打开的是新的一个标签页，我们来定位元素  还是在原有的标签页中定位元素  */
        /* 所以获取不到 */
        /* 解决？：要将标签页切换到要定位元素的页面所在的标签页中 */
        /* 想要切换标签页  要使用 Selenium中内置的 句柄来解决 */
        /* 1. 想要切换句柄，首先要获得浏览器中一共有几个 标签页（句柄） */

        /* 获取句柄 */
        Set<String> handles = driver.getWindowHandles();
        System.out.println(handles);
        /*因为 当前的 set 容器中没有下标 要将 容器转为 数组 取值*/
        Object[] objects = handles.toArray();

        /* 获得到的句柄 有多个 ，切换到我么你想要使用的句柄中即可 */
        /* 切换要使用  switchTo()*/
        driver.switchTo().window((String) objects[1]);   //alt + enter
        WebElement username = driver.findElement(By.name("username"));
        username.clear();
        username.sendKeys("hanamaki");


    }


    @AfterClass
    public void close() {
//        driver.quit();
    }
}
